package com.zzh.Demo;

import java.util.concurrent.*;

/**
 * @author 张占恒.
 * @date 2020/8/28.
 * @time 15:59.
 */
public class TreadPoolDemo {
    //创建一个线程池
    private static ExecutorService pool;
    public static void main(String[] args) {
        //自定义线程池数
        /**
         *corePoolSize:指定了线程池中的线程数量，它的数量决定了添加的任务是开辟新的线程去执行，还是放到workQueue任务队列中去；
         * maximumPoolSize:指定了线程池中的最大线程数量
         * keepAliveTime:当线程池中空闲线程数量超过corePoolSize时，多余的线程会在多长时间内被销毁；
         * unit:keepAliveTime的单位
         * workQueue:任务队列，它一般分为直接提交队列、有界任务队列、无界任务队列、优先任务队列几种；
         * threadFactory:线程工厂，用于创建线程，一般用默认即可；
         * handler:拒绝策略；当任务太多来不及处理时，如何拒绝任务；
         */
        pool = new ThreadPoolExecutor(1, 2, 1000, TimeUnit.MILLISECONDS, new PriorityBlockingQueue<Runnable>(), Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());
        for(int i=0;i<20;i++) {
            pool.execute(new ThreadTask(i));
        }
    }
}
